/**
 * @desc 函数防抖
 * @param fn {Function} 目标函数
 * @param gapTime {Number} 延迟执行毫秒数
 */
export const debounce = (fn, gapTime) => {
    let _lastTime
    return function () {
        clearTimeout(_lastTime)
        _lastTime = setTimeout(() => {
            fn.apply(this, arguments)
        }, gapTime)
    }
}

/**
 * @desc 函数节流
 * @param fn {Function} 函数
 * @param gapTime {Number} 延迟执行毫秒数
 */
export const throttle = (fn, gapTime) => {
    if (gapTime == null || gapTime == undefined) {
        gapTime = 2000
    }
    let _lastTime = null
    // 返回新的函数
    return function () {
        let _nowTime = +new Date()
        if (_nowTime - _lastTime > gapTime || !_lastTime) {
            fn.apply(this, arguments) //将this和参数传给原函数
            _lastTime = _nowTime
        }
    }
}
